import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

public class Test {
    public static void main1(String[] args) {
        String str1 = "hello";
        System.out.println(str1);
        int a = 10;
        System.out.println(a);


    }

    public static void main2(String[] args) {
        String str1 = "hello";
        String str2 = "world";
        int a = 10;
        int b = 20;
        System.out.println(str1 + str2);
        System.out.println(" a = " + a);
        System.out.println(" b = " + b);
        System.out.println("a + b = " + a + b);
        //字符串加其他类型--》字符串 + 其他类型 --》字符串
        System.out.println("a + b = " + (a + b));
        //先计算括号内的 字符串 加 其他类型 --》字符串
        System.out.println(a + b + " = a + b");
        //从左到右计算    先算计算
    }

    public static void main3(String[] args) {
        String str1 = "1234";
        int a = Integer.valueOf(str1);
        double d = Double.valueOf(str1);
        String str2 = Integer.toString(1234);
        System.out.println(a);
        System.out.println(d);
        System.out.println(str2);
    }


    public static void main4(String[] args) {
        int a = 12345;
        String ret = String.valueOf(a);

        System.out.println(ret);

        double d = 1234.12221;
        String ret2 = String.valueOf(d);
        System.out.println(ret2);

        String str1 = "1234";
        int a1 = Integer.valueOf(str1);
        int a2 = 0;
        //指定输入的数是什么进制--》此处指定输入的数是8进制，最后要求全部输出10进制
        System.out.println(Integer.valueOf(str1, 8));
        System.out.println(Integer.valueOf("11101111",2));
        System.out.println(Integer.parseInt(str1));
        System.out.println(a1);
        System.out.println(a2);
    }

    public static void main5(String[] args) {
        String str = "1223.22";

        System.out.println(Double.parseDouble(str));
        System.out.println(Double.valueOf(str));

    }

    public static void main6(String[] args) {
        System.out.println(5/2);
        System.out.println((float)5/2);
        System.out.println(5/(float)2);
        System.out.println((float)(5/2));


        System.out.println(10%3);
        System.out.println(10%-3);
        System.out.println(-10%3);
        System.out.println(-10%-3);


        System.out.println(10.0%3);
        System.out.println(11.5%2);
    }

    public static void main7(String[] args) {
        short sh = 12;
//        sh = sh + 2;  报错  2是int，sh会整型提升为int进行运算  int四个字节，sh放不下‘
        sh += 2 ;       //会帮助我们自动进行类型转换
        System.out.println(sh);
    }

    public static void main8(String[] args) {
        int a = 10;
        a++;
        int b = a--;
        System.out.println(b);

        int i = 10;
        i = i++;
        System.out.println(i);
        //记住结果就好，要研究清楚要研究汇编语言等更多深层的
    }

    public static void main9(String[] args) {
        System.out.println( 1 < 5);
        System.out.println( 1 > 5);
        System.out.println( 5 >= 5);
        //System.out.println( 2 < 4 < 7);  不能连续比较    因为第一次比较的结果就是一个boolean值 ，boolean值不能比较
        //在java当中没有真是非0，假是0

    }


    public static void main10(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a < b && a > b);
        System.out.println(a == 1 && b == 2);
        System.out.println(a  == 2 && 1/0 == 0);
        System.out.println(1/0);
    }

    public static void main11(String[] args) {
        int a = 11;
        System.out.println(a&a);
        System.out.println(a&0);

        System.out.println(a | 0);
        System.out.println(a | a | a);
    }


    public static void main12(String[] args) {
        System.out.println( 10 ^ 0);
        System.out.println( 10 ^ 10);
        System.out.println( ~0);
        System.out.println(~(-1));
    }

    public static void main(String[] args) {
        System.out.println( -11 >> 1);
        System.out.println( -12 >> 1);
        System.out.println( 12 >> 1);
        System.out.println(-1 >>> 2);
    }






}

//八种基本数据类型
//基本数据类型对应的包装类
//在java当中直接赋值不能超过这个数据类型所能表示的最大范围
//boolean只有两个值  true和false 不存在0是假，非0是真
//类型转换 隐式  显示
//类型提升

//字符串类型  C语言不存在字符串类型，在java当中存在字符串类型String

// 在java当中不存在指针，拿不到基本数据类型变量的地址
// 局部变量存放在栈上。
//在java当中，字符串不以‘\0’截止
//两个字符串相加就是将两个字符串拼接在一起

//String不是包装类  包装类是基本数据类型的类类型

///字符串和基本数据类型的转换  valueOf--->parseInt/parseDouble
//valueOf 方法内部是调用parse类型 方法的
//基本数据类型转字符串  valueOf 或者是 toString


//运算符 变量与变量之间-->运算符
//表达式 --》 变量和运算符结合
//变量 --》 运算符 --》 表达式 ---》 逻辑控制  顺序 选择 循环
//算术运算符   加减乘除模
//除   两个int相除结果一定是int,如果除数或者被除数有一个浮点数，则结果是浮点数
//模运算可以有浮点数参加运算  （C语言模运算只能用int，不能用float）

//增量运算符  复合运算符  += *= /=   使用符合运算符会自动帮助我们进行类型转换

//自增 自减  ++ --  前自增  后自增

//关系运算符
//逻辑运算符   逻辑与  && 布尔表达式1 && 布尔表达式2  （表达式必须都为布尔表达式，结果必须为true或者false）
//逻辑与
// 特点  如果表达式1为真，那么执行表达式2 ，如果表达式2为真，整体为真
//      如果表达式1为假，那么就不会执行表达式2（短路与）

//逻辑或   || 布尔表达式1 || 布尔表达式2
//特点   如果表达式1为真，那么不会执行表达式2，  (短路或)
//      如果表达式1为假，那么继续执行表达式2，表达式2为真，则表达式为真，这个表达式要为真，至少有一个为真

//逻辑非    ！布尔表达式



//  | & & 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短路求值.

//位运算符

//  按位与   &   按位与自身得到自身 按位与0得到0      对应位只要有0就是0
//  按位或   |   按位或0得到自身   按位或自身得到自身  对应位只要有1就是1
//  按位异或  ^  对应位不一样就为1（题目 ： 找单身狗）
//特点：两个相同的数字异或  结果一定为0
//     0异或任何数都得到自身
//按位取反   ~  将每一维二进制位都按位取反   1变为0   0变为1


//移位运算符(2h30min左右)

//左移   高位舍弃 低位补0 相当于乘2
//右移   高位补符号位 低位舍弃   想当于除2   -1右移多少位都是-1

//无符号右移   高位补0  低位舍弃  （在高位补0）

//条件运算符  三目运算符 可以嵌套使用

//运算符的优先级    优先级不需要记住 不清楚加括号就好  括号的优先级最高

